home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / docs / hyper / ZCD.lha / Listino / Reviews / GameSmith < prev    next >
Encoding:
Text File  |  1996-06-17  |  16.2 KB  |  316 lines

  1. ===========================================================================
  2.                    REVIEW: GameSmith Development System
  3.                              By:  Dave Haynie 
  4. ===========================================================================
  5.  
  6. PRODUCT NAME:
  7.  
  8.     GameSmith Development System
  9.  
  10. BRIEF DESCRIPTION:
  11.  
  12.     A development system for writing video games.  For use with C and
  13.     Assembler (versions included).  Provides high performance APIs for
  14.     display, animation, and other game related programming.
  15.  
  16. AUTHOR/COMPANY INFORMATION:
  17.  
  18.     Oregon Research
  19.     16200 S.W.  Pacific Highway
  20.     Suite 162
  21.     Tigard, OR 97224
  22.  
  23. MACHINE USED FOR TESTING:
  24.  
  25.     Amiga 3000/25, A3640
  26.     16 MB Fast RAM
  27.     2 MB Chip RAM
  28.     Internal HD floppy
  29.     Quantum 500 MB HD, SCSI
  30.     CDC Wren 750 MB HD, SCSI
  31.     44MB Syquest, SCSI
  32.     NEC CD-ROM, SCSI
  33.     Kickstart 40.60 and WB 40.42.
  34.     oMniBus display system
  35.     CTX 17" monitor
  36.  
  37. ===========================================================================
  38.  
  39. ON WRITING GAMES
  40.  
  41.     Like many people, I began my computer career with games.  The first
  42. computer game I played was a version of the classic "NIM", running on an HP
  43. Desktop calculator (which originally cost more than a loaded A4000 does
  44. today).  Not coincidentally, I also programmed my first games on this
  45. machine, then later via dial-up account to a big CDC Cyber 72 computer.
  46. Games at this level were meant to be played on a teletype of some kind,
  47. they were written in BASIC, and they were very, very simple.
  48.  
  49.     My world changed in 1977 when my best friend bought one of the first
  50. PET systems.  Here was not only a more powerful BASIC than on the CDC, but
  51. it was on a screen!  I started messing around with games on the PET, then
  52. two years later I bought my own computer (an Exidy Sorcerer, I've never
  53. exactly followed the pack) and managed to sell four games to Creative
  54. Computing Software.  These were BASIC/Assembler combinations, and were
  55. distributed on cassette tape.
  56.  
  57.     Lots of things have changed since then.  The computer games of today
  58. are several generations beyond these early games, and the best of them are
  59. coded by some of the world's best programmers.  They're typically written
  60. in fast assembly language, based on libraries of fine-tuned assembly code
  61. and programming models, secret to each game company, developed over years
  62. of games programming.
  63.  
  64.     On the non-professional side of things, programmers write games in
  65. various languages, though BASIC is still, about twenty years after it first
  66. gained popularity, a popular language for games programming.  But like
  67. the games, BASIC has changed quite a bit.  Early BASIC was like assembly or
  68. C language, in that it had only general purpose functions; if you wanted to
  69. draw a circle on the screen, you wrote a routine to draw a circle.  In
  70. today's AMOS, BlitzBasic, and a few others, things are completely
  71. different.  BASIC comes with a wide variety of graphics functions,
  72. including animation routines, collision detection, drawing routines,
  73. scale/rotate functions, mouse and joystick inter- faces, etc.  There are
  74. compilers that speed up the generated code and allows a stand-alone version
  75. to be released.  And most modern BASICs come with a set of object editors,
  76. to make drawing and animating very easy.
  77.  
  78. ENTER C/ASSEMBLER
  79.  
  80.     So, one might well ask, how could C or Assembler seriously be
  81. considered for writing games?  Either you're playing, and write in BASIC,
  82. or you hunker down, write a killer set of graphics routines, and turn pro.
  83.  
  84.     Until recently, that's probably just how it was for most people.  But
  85. thanks to the GameSmith Development System, from Oregon Research, there is
  86. now an alternative road to take.  The GameSmith system provides
  87. sophisticated routines for display control, animation, collision detection,
  88. timing, and other essential elements of any video game.
  89.  
  90.     GameSmith comes compressed on three floppy disks.  Via the standard
  91. Amiga installer, it loads the various components of the system onto your
  92. hard disk: the GameSmith linker library, includes for C and assembler, the
  93. CITAS object animation tool, some examples, a tutorial, and optionally, a C
  94. compiler (a special version of Obvious Implementations' DICE), and an
  95. assembler (a special version of HiSoft's DevPac3), and of most interest,
  96. the GameSmith library.  GameSmith can be used with most other C compilers
  97. or standard Amiga assemblers.  As of this writing, it does not come with
  98. the full set of Amiga include files, only because in the absence of
  99. Commodore, there was no way to officially licence the include files.
  100.  
  101. DISPLAY AND GRAPHICS
  102.  
  103.     The first thing you'll need in any game is a window and, usually, some
  104. kind of background.  GameSmith handles a variety of displays: Intuition
  105. Window, Intuition Screen, or custom "take over the display" displays.
  106. Custom displays are based on the Amiga's graphics.library.  They support
  107. double buffering, smooth scrolling over a large bitmap, multiple viewports,
  108. "parallax" viewports (scrolling with smooth wraparound), and even AGA
  109. features.  User-define copper lists can be added, too.  The kind of display
  110. is up to the programmer; GameSmith functions unrelated to display control
  111. don't care about the kind of display.  There's even a GameSmith function
  112. that identifies the type of Amiga chipset, so the display can be tailored
  113. to the system in use.
  114.  
  115.     Once you have a display, the next step is to put something into it.  An
  116. IFF/ILBM image from disk is easily loaded into an existing bitmap, or a new
  117. bitmap sized to the image on load.  For double buffer support, the same
  118. image can automatically go into two bitmaps.  The bitmap can be encrypted
  119. for security (see below).
  120.  
  121.     Simplified blitter functions allow images to be blitted into a
  122. background, optionally saving or restoring the background as necessary. 
  123. Single pixels can be set, complemented, and tested.  Colors can be set
  124. individually, or by whole palette.
  125.  
  126.     A nice set of "vector" routines calculates coordinates of the best line
  127. between any two points in a display.  While you can use this to draw lines,
  128. it's just as useful for moving things along a straight line.
  129.  
  130. ANIMATION AND CITAS
  131.  
  132.     The Animation system is the high point of GameSmith, and the piece that
  133. takes from being "a good idea" to "something really cool".  As an
  134. experienced Amiga programmer, I wouldn't have a real problem doing most of
  135. the other GameSmith functions myself, though GameSmith certainly does quite
  136. a few of the tricky bits for you.  The Animation system is so slick,
  137. though, it would take months if not years of programming animations on the
  138. Amiga before you had something going nearly as well.  And, of course, the
  139. GameSmith system is general purpose, you get to reuse it for any new game.
  140.  
  141.     The main point of the animation system is to automate the movement of
  142. objects across a playfield, and manage their interaction with each other
  143. and with the playfield.  This is a very sophisticated setup, though.  An
  144. object can be a simple animation, a set of individual pictures which, when
  145. played one after another, form some kind of motion (though one-frame
  146. animations are also allowed).  Fancier movements can be done using a
  147. "complex animation", which groups different animation sequences as one
  148. item.  For example, I might have a running character in my game.  He can
  149. run left or right, maybe also jump or duck.  That can be represented as a
  150. series of six animation sequences.  All the programmer need worry about is
  151. telling the animation system which sequence applies at any given moment.
  152.  
  153.     Integral to the animation is CITAS.  CITAS is a user friendly,
  154. style-guide compliant tool for editing animations, complex animations, and
  155. various collision relationships.  It can save any work to disk in files
  156. that can be loaded by the GameSmith library routines, or convert directly
  157. to C or Assembler, to allow the data to be embedded in the game itself.
  158.  
  159.     While individual movement images must be drawn in a bitmap editor,
  160. CITAS can aid in assembling the animation.  It can flip images horizontally
  161. or vertically, and rotate them by 90 degree increments.  Each cell in an
  162. animation can be shifted for smooth alignments, and animations can be
  163. previewed.  Complex animations can be built from any defined simple
  164. animations.
  165.  
  166.     Up to 32 collision types can be defined for each animation.  Once the
  167. types are defined, interactions between the types (what collides with what)
  168. can be defined.  For each frame of an animation, rectangles corresponding
  169. to any of the collision types may be defined.  Collisions between object
  170. and background may also be defined.
  171.  
  172. OTHER COOL FEATURES
  173.  
  174.     The GameSmith sound system can load an IFF 8SVX or raw sample from
  175. disk, and automatically play it for you.  The sound data can be buffered in
  176. fast RAM (only a small amount of chip RAM is needed), and it can be
  177. automatically looped from any single loop point in the sample.  Volume and
  178. period can be set, and various automatic fades can be defined; reasonable
  179. period constants for five octaves worth of notes are defined in an include
  180. file.  Each of the four Amiga sound channels can be driven individually.
  181.  
  182.     Timing is a big concern, especially if you aim to support Amigas from
  183. the original A500, A1000, and A2000, through the latest 68060-accelerated
  184. A3000s and A4000; roughly a 100:1 performance range on many operations.
  185. The key is tying performance to a constant, the most common constant is the
  186. vertical blank.  Every 1/60th of a second on NTSC systems, 1/50ths of a
  187. second on PAL systems, a normal video "frame" has been displayed, and must
  188. be restarted.  This is called the vertical blank, due to the fact that the
  189. display is blanked during this period (that's why you don't see anything
  190. beyond the active overscan area of a screen).  Many elements of the
  191. GameSmith system, animation and sound, for example, are automatically based
  192. on vertical blank.  Additional functions provide a count of elapsed
  193. vertical blanks, and allow an arbitrary function to be called during the
  194. vertical blank.
  195.  
  196.     GameSmith supports a simplified joystick input function, which can
  197. return the button and direction settings of a digital joystick in either
  198. port.  For mouse or analog joysticks, you'll have to use AmigaOS functions
  199. (or hardware banging, if that's your perferred method) directly.
  200.  
  201. ADDITIONAL TOOLS
  202.  
  203.     Unlike some BASIC systems, GameSmith is not completely stand-alone.
  204. You will need a bitmap editor, such as Deluxe Paint, for creating
  205. backgrounds, ANIMs, and other graphic objects (of course, ANIMs can be
  206. created from bitmaps in CITAS).  For professional work, this is reasonable;
  207. a real bitmap editor is much more flexible than any of the tiny editors
  208. you'll find in most BASIC systems.
  209.  
  210.     Similarly, for sound you're going to need some way of creating effects,
  211. music, or anything else that's going to play in a game.  An 8-bit audio
  212. sampler and waveform editor is probably your best bet for building custom
  213. sound effects.
  214.  
  215. PROFESSIONAL CONCERNS
  216.  
  217.     The first professional question to ask is, "could I use GameSmith for a
  218. commercial game".  You certainly can.  The development system, obviously,
  219. is copyrighted software and may not be given out.  The run-time system, the
  220. bits of the GameSmith library that are compiled into your game, however,
  221. have no listed restrictions at all.  This is a very nice attitude, and
  222. definitely what professionals expect.  Some compiled BASIC systems restrict
  223. their run-time systems to some extent, and course uncompiled BASIC can't be
  224. distributed at all.
  225.  
  226.     Another concern is the integrity of your program and its artwork.  When
  227. you have external images, animations, and sounds, you may not want users
  228. taking these for their own programs.  GameSmith provides some help here.
  229. You can lock an animation, such that other programs can't load it, and you
  230. can check to make sure no alternate animation was substituted.  Animation
  231. files are always encrypted; the "Save Anim Final" function in CITAS does
  232. this, preventing any re-load back into CITAS.  IFF ILBM and 8SVX files can
  233. also be encrypted on disk, and they'll be automatically decrypted by the
  234. proper key when loaded.  The encryption functions are provided, but can be
  235. replaced if desired.  While these might not fend off a determined cracker
  236. with cryptographic experience, they're more than enough to dissuade most
  237. users.
  238.  
  239. THE HELP BUTTON
  240.  
  241.     A valid concern of any programmer is the availability of technical
  242. support for a new programming interface.  The first line of defense is, of
  243. course, the included manual, and the 354 page GameSmith manual is fairly
  244. complete.  In the usual fashion, the manual details the use of each
  245. subsystem (Display, Animation, CITAS, Sound, and Utilities), then details
  246. each specific GameSmith function.
  247.  
  248.     Another included resource is the set of include files themselves.  Much
  249. like the normal Amiga include files, the GameSmith include files are
  250. commented.  I have found this kind of commenting extremely valuable,
  251. especially once you're started to understand the programming system and
  252. getting into more detailed work.
  253.  
  254.     Finally, there's technical support from Oregon Research themselves.
  255. When you return the registration card, you're entitled to 90 days of free
  256. support via letter, phone, FAX, or email.  After the 90 day period, you can
  257. still get free support via letter.  If you want more, for a nominal fee
  258. Oregon offers two lifetime support programs which include phone, FAX, and
  259. email support, a newsletter, access to their BBS, and optionally, free
  260. incremental upgrades.  Obviously, their support is intended for the
  261. GameSmith system itself, not C/Assembly programming or general AmigaOS
  262. questions.
  263.  
  264.     While the GameSmith system can be considered stand-alone (assuming you
  265. can track down some C or assembler include files, the Fred Fish CD-ROM
  266. series is a good place for these), you will need the standard set of
  267. programmer's documentation on the AmigaOS itself.  GameSmith doesn't
  268. attempt to replace what the AmigaOS does well already, it's more of an
  269. addition to it.  So you'll still use Amiga routines for memory allocation,
  270. some disk I/O, etc.
  271.  
  272. MY GAME
  273.  
  274.     I went into this thinking, "hey, a BASIC-like game library for C, I'll
  275. crank out a quickie game to go along with this review".  Well, I did start
  276. writing a game, and I have made real progress.  But GameSmith isn't as
  277. quick and dirty as your typical BASIC, and that's a good thing, really.
  278. Because, as it turns out, GameSmith is far more powerful and considerably
  279. faster than any BASIC I've played around with.
  280.  
  281.     So my game's not accompanying this review.  Hopefully I'll have time to
  282. finish it, stay tuned to AmigaReport for news.  GameSmith is certainly fun
  283. to work with, and the idea of writing something that can approach
  284. professional quality is invigorating.  If you don't get there, it's your
  285. idea, your artwork, etc.  that's sub-par, it's not likely to be GameSmith
  286. in the way.
  287.  
  288. THE BOTTOM LINE
  289.  
  290.     The GameSmith Development System is an excellent way to get into game
  291. development.  While it might not hit the performance levels of the best
  292. custom routines used by the top game authors, it's probably close enough
  293. for most purposes.  There's certainly a learning curve here, you're not
  294. going crank out Lemmings on your first day with the system.  But you could
  295. eventually write something like Lemmings with it.
  296.  
  297.     Of course, nothing's perfect.  I did get an Enforcer hit, apparently
  298. when a GameSmith program closes down.  This should be harmless.  The
  299. GameSmith system is an evolving thing at present, so there's a good chance
  300. this will be fixed in future releases.
  301.  
  302.     While the animation system is excellent, the sound system is a bit
  303. lacking.  While it's certainly possible to build an 8SVX file that plays a
  304. tune, some support for converting MOD or MIDI files would be real useful. 
  305. Simple tunes could can represented with several short loops and a table of
  306. pitch and duration values, but constructing this by hand would be tedious.
  307.  
  308.     The bottom line is that GameSmith is a real good idea, though perhaps
  309. not for everyone.  It's usually harder, though by no means impossible, to
  310. learn C or Assembler, even as a first language, rather than BASIC.  Well
  311. written assembler will push a system as fast as it's capable of being
  312. pushed, as long as the algorithms don't get in the way.  With a good
  313. compiler like SAS or DICE, C code can approach the efficiency of Assembler,
  314. and if nothing else, good C code is more maintainable than most BASIC or
  315. Assembler, and it's a marketable skill.
  316.